﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

public class MsgListenerMgr
{
	//消息委托类型
	public delegate void MsgListener(params object[] para);
	//消息监听列表
	private static Dictionary<MsgListenerType, MsgListener> msgListeners = new Dictionary<MsgListenerType, MsgListener>();
	//添加消息监听
	public static void AddMsgListener(MsgListenerType msgName, MsgListener listener)
	{
		//添加
		if (msgListeners.ContainsKey(msgName))
		{
			msgListeners[msgName] += listener;
		}
		//新增
		else
		{
			msgListeners[msgName] = listener;
		}
	}

	//删除消息监听
	public static void RemoveMsgListener(MsgListenerType msgName, MsgListener listener)
	{
		if (msgListeners.ContainsKey(msgName))
		{
			msgListeners[msgName] -= listener;
			if (msgListeners[msgName] == null)
            {
				msgListeners.Remove(msgName);
            }
		}
	}

	//分发消息
	public static void FireMsg(MsgListenerType msgName, params object[] para)
	{
		if (msgListeners.ContainsKey(msgName))
		{
			msgListeners[msgName](para);
		}
	}
}
